package org.dromara.system.service.impl;

import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.BeanCopyUtils;
import org.dromara.system.mapper.GenTableMapper;
import org.dromara.system.pojo.bo.GenTableBO;
import org.dromara.system.pojo.entity.GenTableDO;
import org.dromara.system.pojo.qo.GenTableQO;
import org.dromara.system.pojo.vo.GenTableVO;
import org.dromara.system.service.GenTableService;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 代码生成业务表 服务层实现。
 *
 * @author mkj
 * @since 2024-07-21
 */
@RequiredArgsConstructor
@Service
public class GenTableServiceImpl implements GenTableService {

    private final GenTableMapper genTableMapper;

    @Override
    public boolean add(GenTableBO genTableBO) {
        GenTableDO genTableDO = BeanCopyUtils.copy(genTableBO, GenTableDO.class);
        return genTableMapper.insert(genTableDO) > 0;
    }

    @Override
    public boolean remove(Long id) {
        return genTableMapper.deleteById(id) > 0;
    }

    @Override
    public boolean update(GenTableBO genTableBO) {
        GenTableDO genTableDO = BeanCopyUtils.copy(genTableBO, GenTableDO.class);
        return genTableMapper.update(genTableDO) > 0;
    }

    @Override
    public List<GenTableVO> list(GenTableQO genTableQO) {
        GenTableDO genTableDO = BeanCopyUtils.copy(genTableQO, GenTableDO.class);
        QueryWrapper queryWrapper = QueryWrapper.create(genTableDO);
        return genTableMapper.selectListByQueryAs(queryWrapper, GenTableVO.class);
    }

    @Override
    public GenTableVO getInfo(Long id) {
        GenTableDO genTableDO = genTableMapper.selectOneById(id);
        if (genTableDO == null) {
            return null;
        }
        return BeanCopyUtils.copy(genTableDO, GenTableVO.class);
    }

    @Override
    public Page<GenTableVO> page(GenTableQO page) {
        return genTableMapper.paginateAs(page.getPageNumber(), page.getPageSize(), QueryWrapper.create(page), GenTableVO.class);
    }

}

